package com.lz.gamll.feign.retryer;

import feign.RetryableException;
import feign.Retryer;
import lombok.extern.slf4j.Slf4j;

/**
 * @author 郭运龙
 */
@Slf4j
public class MyRetryer implements Retryer {

    private int start = 1;

    /**
     * 远程调用失败后，会调用重试器的这个方法
     * 这个方法如果没有抛出异常就会无限的重试下去
     * @param e
     */
    @Override
    public void continueOrPropagate(RetryableException e) {
        log.info("重试器continueOrPropagate方法执行了。。。。。。");
        //设定重试次数三次
        int end = 3;
        if (start> end){
            throw e;
        }
        start++;

    }

    /**
     * 克隆方法，获取重试器对象
     * 框架底层调用该方法希望获取一个重试器对象
     * @return
     */
    @Override
    public Retryer clone() {
        return new MyRetryer();
    }
}
